# 这里是计算器的相关设置
# 切勿从这里启动计算器！（？
from time import sleep
from Color import _color

# 语言加载模块
prefix = _color.prefix(0, "[交互式计算器]")
line = _color.line(0, "————————————————————————————————————————————————")
lang_pre_1 = "欢迎使用交互式计算器！"
lang_pre_2 = "计算器的主程序已经被划分成两个子文件！"
lang_pre_3 = "输入除了2以外的任意数字以开始运算，或输入2以查看帮助~"
lang_modecho_1 = "现在您需要选择一个计算模式，以下为可选项："
lang_modecho_2 = "1.加法器"
lang_modecho_3 = "2.减法器"
lang_modecho_4 = "3.乘法器"
lang_modecho_5 = "4.除法器"
lang_modecho_6 = "注意：选择列表中没有的数字会导致进程无法运行！"
lang_modeuse_1 = "您已经选择了计算模式："
lang_modeuse_2 = "加法器"
lang_modeuse_3 = "减法器"
lang_modeuse_4 = "乘法器"
lang_modeuse_5 = "除法器"
lang_numinput_1 = "请输入参与运算的第一个数字："
lang_numinput_2 = "请输入参与运算的第二个数字："
lang_result_1 = "运算结果为："
lang_nextstep_1 = "下一步，您希望……"
lang_nextstep_2 = "1.继续进行此运算"
lang_nextstep_3 = "2.更换计算模式"
lang_nextstep_4 = "3.返回欢迎界面"
lang_nextstep_5 = "4.退出计算器"
lang_finish_1 = "进程已经结束，感谢您的使用"
lang_error_prefix = _color.warning_prefix(0, "[警告：异常]")
lang_error_0 = "进程无法继续运行，可能是涉及到未完工的部分！"
lang_error_1 = "circleset循环数异常，可能是代码编写有误！"
lang_error_2 = "选择的计算模式不存在！"
lang_error_3 = "选择的操作无法执行！"
lang_help_prefix = _color.help(0, "[帮助]")
lang_help_1 = "这里是本交互式计算器的内置帮助文档。"
lang_help_Q1 = "Q1：如何退出计算器？"
lang_help_A1_1 = "A1：合理的退出方法：经过一遍计算之后选择退出；"
lang_help_A1_2 = ">>>或者，在选择计算模式的页面输入0以退出"
lang_help_A1_3 = ">>>不合理的退出方法：直接叉掉窗口，毕竟不是什么大程序，问题不大（"
lang_help_Q2 = "Q2：有哪些设置项？"
lang_help_A2 = "A2：在选择计算模式的页面输入-1以进入设置页面，可供设置的内容不算很多，将就用（"
lang_help_Q3 = "Q3：遇见异常怎么办？"
lang_help_A3 = "A3：对照提示信息自己看，这么小的程序应该没有什么bug（吧……？"
lang_help_2 = "本界面将显示十秒，然后自动跳转至欢迎界面……"

# 变量初始化
mode_set = 0
# 设置初始循环数为6
circle_set = 6
# 设置初始报错数为0
error_tag = 0


class _setting:

    # 语言显示模块
    def lang_pre(self: int):
        global hello_num, circle_set
        print(prefix, line)
        print(prefix, lang_pre_1)
        print(prefix, lang_pre_2)
        print(prefix, lang_pre_3)
        hello_num = int(input(prefix))
        if hello_num == 2:
            _setting.cal_help(0)
            circle_set = 7
        else:
            circle_set = 6
        return circle_set

    def lang_mode_cho(self: int):  # 选择计算模式
        global circle_set  # 声明全局变量
        print(prefix, line)
        print(prefix, lang_modecho_1)
        print(prefix, lang_modecho_2)
        print(prefix, lang_modecho_3)
        print(prefix, lang_modecho_4)
        print(prefix, lang_modecho_5)
        print(prefix, lang_modecho_6)
        circle_set = 5
        return circle_set

    def lang_mode_use(self: int):  # 确认使用模式
        global circle_set  # 声明全局变量
        print(prefix, line)
        print(prefix, lang_modeuse_1, mode_set)
        if mode_set == 1:
            print(prefix, lang_modeuse_2)
        elif mode_set == 2:
            print(prefix, lang_modeuse_3)
        elif mode_set == 3:
            print(prefix, lang_modeuse_4)
        elif mode_set == 4:
            print(prefix, lang_modeuse_5)
        circle_set = 4
        return circle_set

    def lang_num_input(self: int):  # 输入运算数
        global circle_set, num_1, num_2  # 声明全局变量
        print(prefix, line)
        print(prefix, lang_numinput_1)
        num_1 = _setting.num_input(0)
        print(prefix, lang_numinput_2)
        num_2 = _setting.num_input(0)
        circle_set = 4  # 将循环数设为4，进入运算阶段
        return num_1, num_2

    def next_step(self: int):
        global circle_set
        print(prefix, line)
        print(prefix, lang_nextstep_1)
        print(prefix, lang_nextstep_2)
        print(prefix, lang_nextstep_3)
        print(prefix, lang_nextstep_4)
        print(prefix, lang_nextstep_5)
        circle_set = _setting.next_step_input(0)
        return circle_set

    # 计算模块

    def lang_cal_1(self: int):  # 进行加法运算（循环数已设为4）
        global result, circle_set
        print(prefix, line)
        result = num_1 + num_2
        print(prefix, lang_result_1, result)
        circle_set = 3
        return circle_set

    def lang_cal_2(self: int):  # 进行减法运算（循环数已设为4）
        global result, circle_set
        print(prefix, line)
        result = num_1 - num_2
        print(prefix, lang_result_1, result)
        circle_set = 3
        return circle_set

    def lang_cal_3(self: int):  # 进行乘法运算（循环数已设为4）
        global result, circle_set
        print(prefix, line)
        result = num_1 * num_2
        print(prefix, lang_result_1, result)
        circle_set = 3
        return circle_set

    def lang_cal_4(self: int):  # 进行除法运算（循环数已设为4）
        global result, circle_set
        print(prefix, line)
        result = num_1 / num_2
        print(prefix, lang_result_1, result)
        circle_set = 3
        return circle_set

    # 逻辑运算模块
    def mode_cho(self: int):  # 获取使用模式
        global mode_set, error_tag
        mode_set = int(input(prefix))  # modeset为运算的模式
        if mode_set != 1 and mode_set != 2 and mode_set != 3 and mode_set != 4:
            error_tag = _setting.error_finish_2(0)
        return error_tag, mode_set

    def num_input(self: int):  # 获取运算数
        return int(input(prefix))

    def next_step_input(self: int):
        global next_input, circle_set, error_tag
        next_input = int(input(prefix))
        if next_input == 1:  # 输入值为1，设循环数为5，继续此运算
            circle_set = 5
        elif next_input == 2:  # 输入值为2，设循环数为6，重选计算模式
            circle_set = 6
        elif next_input == 3:  # 输入值为3，设循环数为7，回到欢迎界面
            circle_set = 7
        elif next_input == 4:  # 输入值为4，设循环数为10，退出循环
            circle_set = 10
        else:
            error_tag = _setting.error_finish_3(0)
        return error_tag, circle_set

    # 退出
    def finish(self: int):  # 正常退出，设置循环数为10，
        global circle_set
        print(prefix, line)
        print(prefix, lang_finish_1)
        circle_set = 10
        return circle_set

    def error_finish_0(self: int):  # 非正常退出：进程运行至未完成部分，循环数设为999
        global circle_set
        print(lang_error_prefix, line)
        circle_set = 999
        print(lang_error_prefix, lang_error_0)
        return circle_set

    def error_finish_1(self: int):  # main()函数内出现循环数异常（小于等于6但不匹配），一般不触发，会将报错数设为1
        global error_tag
        print(lang_error_prefix, line)
        error_tag = 1
        print(lang_error_prefix, lang_error_1)
        return error_tag

    def error_finish_2(self: int):  # 选择的计算模式不存在时触发，将报错数设为2
        global error_tag
        print(lang_error_prefix, line)
        error_tag = 2
        print(lang_error_prefix, lang_error_2)
        return error_tag

    def error_finish_3(self: int):
        global error_tag
        print(lang_error_prefix, line)
        error_tag = 3
        print(lang_error_prefix, lang_error_3)
        return error_tag

    # 反馈信息

    def cal_help(self: int):
        print(lang_help_prefix, line)
        print(lang_help_prefix, lang_help_1)
        print(lang_help_prefix, lang_help_Q1)
        print(lang_help_prefix, lang_help_A1_1)
        print(lang_help_prefix, lang_help_A1_2)
        print(lang_help_prefix, lang_help_A1_3)
        print(lang_help_prefix, lang_help_Q2)
        print(lang_help_prefix, lang_help_A2)
        print(lang_help_prefix, lang_help_Q3)
        print(lang_help_prefix, lang_help_A3)
        print(lang_help_prefix, lang_help_2)
        sleep(10)
        return 0


# 启动提示

lang_successfully_start = "Setting.py导入成功"

print(lang_successfully_start)
